package controller

import (
	"gin/response"
	"gin/service"
	"github.com/gin-gonic/gin"
)

var (
	userService = service.User{}
)

type User struct {
}

// 获取指定时间段团队工作负载统计
// 1. 当前租户投入制作人数（部门配置了工序）
// 2. 有任务的制作人数
// 3. 负载率，已投产/总产能
func (c *User) GetUserTaskWorkloadStatistics(ctx *gin.Context) {
	var req CountRealTimeTaskReq
	err := ctx.ShouldBindJSON(&req)

	if err != nil {
		response.Fail(ctx, nil, err.Error())
		return
	}

	// 获取当前租户所有是组员和组长的角色
	userIds, err := userService.GetUserListByRoleCode(req.TenantId, []string{"headman", "artist"})
	if err != nil {
		response.Fail(ctx, nil, err.Error())
		return
	}

	// 获取未完成状态列表
	ipStatusIds, _ := statusService.GetStatusIdsByCorrespond([]string{"feedback", "daily", "in_progress"})
	resData, queryErr := taskService.GetUserTaskWorkloadStatistics(req.TenantId, req.ProjectIds, ipStatusIds, userIds)

	if queryErr != nil {
		// 查询失败
		response.Fail(ctx, nil, queryErr.Error())
	} else {
		// 查询成功
		response.Success(ctx, gin.H{"data": resData}, "success")
	}
}
